/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BUS;

import DAO.DAO;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Endlesslove
 */
public class NhanVien implements IDaTa
{

    /**
     *
     * @param tham so truyen vao ham la 1 hoac nhieu string
     * @return Tra ve thng tin cua 1 nhan vien
     */
    @Override
    public ResultSet Search(DTO.Idata Obj) 
    {
        try
        {
            List<String> params = new ArrayList<>();
            params.add("char:" +  ((DTO.NhanVien)Obj).getID()) ;//ma nhan vien
            return DAO.CallProc("LayThongTinNhanVien", params);
            
        } 
        catch (Exception ex) 
        {
            return null;
        }
    }
    
    public ResultSet GetSecurity(DTO.Idata Obj) 
    {
        try
        {
            List<String> params = new ArrayList<>();
            params.add("char:" +  ((DTO.NhanVien)Obj).getID()) ;//ma nhan vien
            return DAO.CallProc("LayQuyenHanNhanVien", params);
            
        } 
        catch (Exception ex) 
        {
            return null;
        }
    }

    @Override
    public boolean Update(DTO.Idata Obj)
    {
        List<String> params = new ArrayList<>();
        params.add("char:" +  ((DTO.NhanVien)Obj).getID()) ;//ma nhan vien
        params.add("nvarchar:" +  ((DTO.NhanVien)Obj).TenNhanVien);//Ho ten
        params.add("nvarchar:" +  ((DTO.NhanVien)Obj).MatKhau );//Mat Khau
        params.add("char:" +  ((DTO.NhanVien)Obj).MaViTri );//MaVi Tri
        return DAO.CallProc("SuaNhanVien", params, true);
    }

    @Override
    public boolean Delete(DTO.Idata Obj) 
    {
        List<String> params = new ArrayList<>();
        params.add("char:" +  ((DTO.NhanVien)Obj).getID()) ;//ma nhan vien
        return DAO.CallProc("XoaNhanVien", params, true);
    }

    @Override
    public void LoadData(Object table) 
    {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public boolean Insert(DTO.Idata Obj) 
    {
        List<String> params = new ArrayList<>();
        params.add("char:" +  ((DTO.NhanVien)Obj).getID()) ;//ma nhan vien
        params.add("nvarchar:" +  ((DTO.NhanVien)Obj).TenNhanVien);//Ho ten
        params.add("nvarchar:" +  ((DTO.NhanVien)Obj).MatKhau );//Mat Khau
        params.add("char:" +  ((DTO.NhanVien)Obj).MaViTri);//MaVi Tri
        return DAO.CallProc("ThemNhanVien", params, true);
    }

    @Override
    public String GenerateID() 
    {
        try 
        {
            ResultSet res = DAO.CallProc("LayMaSachCuoi");
            if (res.next())
            {    
              int index  = Integer.parseInt(((String)res.getObject(1)).split("NV")[1].trim());
              String ms = "NV";
              ms += (index+1)>=10?(index+1)>=100? (index +1) : "0" + (index +1) : "00" + (index + 1);
              return ms;
            }
            return "NV001";
         } 
        catch (SQLException ex) 
        {
            return "NV001";
        }
        catch(Exception ie)
        {
            return "NV001";
        }
    }
    
}
